/**
 * Copyright (C) 2010 Cloudfarming <info@cloudfarming.nl>
 *
 * Licensed under the Eclipse Public License - v 1.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.eclipse.org/legal/epl-v10.html
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package nl.cloudfarming.client;

import javax.swing.JOptionPane;
import nl.cloudfarming.sensor.Receiver;
import org.openide.LifecycleManager;
import org.openide.util.Lookup;

/**
 *
 * @author Merijn Zengers
 */
public class MyLifecycleManager extends LifecycleManager {

    @Override
    public void saveAll() {
        for (LifecycleManager manager : Lookup.getDefault().lookupAll(LifecycleManager.class)) {
            if (manager != this) {
                manager.saveAll();
            }
        }
    }

    @Override
    public void exit() {
        if (Lookup.getDefault().lookupAll(Receiver.class) == null || Lookup.getDefault().lookupAll(Receiver.class).isEmpty()) {
            for (Receiver receiver : Lookup.getDefault().lookupAll(Receiver.class)) {
                if (receiver.isReceiving()) {
                    //TODO refactor me please!!! No hard coded messages
                    Object[] options = {"OK", "CANCEL"};
                    int choice = JOptionPane.showOptionDialog(null, "Het systeem is nog steeds bestanden aan het inlezen weet u zeker dat u af wilt sluiten?", "Bestanden inlezen", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]);
                    if (choice == 0) {
                        exitDefault();
                    }
                } else {
                    exitDefault();
                }
            }
        } else {
            exitDefault();
        }

    }

    private void exitDefault() {
        for (LifecycleManager manager : Lookup.getDefault().lookupAll(LifecycleManager.class)) {
            if (manager != this) {
                manager.exit();
            }
        }
    }
}
